package Utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.UUID;

/**
 * 静态工具类
 *
 * @author d11yu
 */
public final class NumberUtils {
    //region Random Number Generator

    /**
     * 生成随机数，默认保留整数位，RoundingMode默认为RoundingMode.HALF_UP，即四舍五入。
     *
     * @param min ：下限
     * @param max ：上限
     * @return
     */
    public static double generateRandomNumber(double min,
                                              double max) {
        return generateRandomNumber(min, max, 0, RoundingMode.HALF_UP);
    }

    /**
     * 生成随机数。
     *
     * @param min：下限
     * @param max：上限
     * @param scale：保留小数位数。
     * @param rm：RoundingMode。
     * @return
     */
    public static double generateRandomNumber(double min,
                                              double max,
                                              int scale,
                                              RoundingMode rm) {
        return BigDecimal.valueOf(Math.random() * (max - min) + min).setScale(scale, rm).doubleValue();
    }

    /**
     * 生成随机数。
     *
     * @param min ：下限
     * @param max ：上限
     * @return
     */
    public static float generateRandomNumber(float min,
                                             float max) {
        return generateRandomNumber(min, max, 0, RoundingMode.HALF_UP);
    }

    /**
     * 生成随机数。
     *
     * @param min：下限
     * @param max：上限
     * @param scale：保留小数位数。
     * @param rm：RoundingMode。
     * @return
     */
    public static float generateRandomNumber(float min, float max, int scale, RoundingMode rm) {
        return BigDecimal.valueOf(Math.random() * (max - min) + min).setScale(scale, rm).floatValue();
    }
    //endregion

    /**
     * 生成UUID字符串
     *
     * @return
     */
    public static String generateUUID() {
        return UUID.randomUUID().toString();
    }
}
